//
// Created by xm on 2024/5/13.
//

#ifndef CPP_CORE_MYARRAY_H
#define CPP_CORE_MYARRAY_H
#include "iostream"
namespace Test04 {

    class MyArray {
    public:
        MyArray();
        MyArray(int capacity, int val =0);
        ~MyArray();
        MyArray(const MyArray &arr);

        //重写赋值运算符重载函数
        MyArray& operator=(const MyArray &m);

        //要能当左右值
        int& operator[](int index);

        // 头插
        void pushFront(int val);
        // 尾插
        void pushBack(int val);
        // 头删
        void popFront();
        // 尾删
        void popBack();
        // 获取元素个数
        int size();
        // 容量
        int capacity();
        // 指定位置掺入
        void insert(int pos, int val);
        // 获取指定位置的值
        int &get(int pos);
        // 在指定位置修改值
        void set(int pos, int val);

        void toPrint();
        std::string description() const;

    private:
        int *pArray;
        int mSize;
        int mCapacity;

    };

} // Test04

#endif //CPP_CORE_MYARRAY_H
